using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes.DomainAttributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Enums;
using System.Collections.Generic;
using System.ComponentModel;

namespace Baci.ArcGIS._GeocodingTools
{
    /// <summary>
    /// <para>Rebuild Address Locator</para>
    /// <para>Rebuilds an address locator to update the locator with the current reference data. Because a locator contains a snapshot of the reference data when it was created, it will not geocode addresses with the updated data  when the geometry and attributes of the reference data are changed.  To geocode addresses with the current version of the reference data, the  locator must be rebuilt if you want to update the changes in the locator.</para>
    /// <para>重新构建地址定位器以使用当前参考数据更新定位器。由于定位器在创建时包含参考数据的快照，因此当更改参考数据的几何和属性时，定位器不会使用更新的数据对地址进行地理编码。 要使用当前版本的参考数据对地址进行地理编码，如果要更新定位器中的更改，则必须重新构建定位器。</para>
    /// </summary>    
    [DisplayName("Rebuild Address Locator")]
    public class RebuildAddressLocator : AbstractGPProcess
    {
        /// <summary>
        /// 无参构造
        /// </summary>
        public RebuildAddressLocator()
        {

        }

        /// <summary>
        /// 有参构造
        /// </summary>
        /// <param name="_in_address_locator">
        /// <para>Input Address Locator</para>
        /// <para>The address locator to rebuild.</para>
        /// <para>要重建的地址定位器。</para>
        /// </param>
        public RebuildAddressLocator(object _in_address_locator)
        {
            this._in_address_locator = _in_address_locator;
        }
        public override string ToolboxName => "Geocoding Tools";

        public override string ToolName => "Rebuild Address Locator";

        public override string CallName => "geocoding.RebuildAddressLocator";

        public override List<string> AcceptEnvironments => [];

        public override object[] ParameterInfo => [_in_address_locator, _out_address_locator];

        /// <summary>
        /// <para>Input Address Locator</para>
        /// <para>The address locator to rebuild.</para>
        /// <para>要重建的地址定位器。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Input Address Locator")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _in_address_locator { get; set; }


        /// <summary>
        /// <para>Rebuilt Address Locator</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Rebuilt Address Locator")]
        [Description("")]
        [Option(OptionTypeEnum.derived)]
        public object _out_address_locator { get; set; }


        public RebuildAddressLocator SetEnv()
        {
            base.SetEnv();
            return this;
        }

    }

}